// 4.导入node内置的querystring模块
const qs = require('querystring')

const bodyParse = (req,res,next)=>{
  // 自定义中间件的逻辑

  // 1.接收从客户端传过来的每一笔数据(因为数据可能太大需要分割开来)
  let str = ''
  
  /**
   * 2.监听req的data事件，回调函数的chunk就是指 获取的每一笔数据
   *   str定义在监听事件的外面，这样就可以把所有的chunk串起来了
   * */ 
  req.on('data',(chunk)=>{
      str += chunk
  })

  // 3.监听req的的end事件，它将在数据传输完毕时触发
  req.on('end',()=>{
      // 打印完整的请求体数据
      // console.log(str);
      // 5.将字符串的请求体数据转化为对象类型数据
      const body = qs.parse(str)
      // console.log(body);
      req.body = body
      // 转接给后面的user路由
      next()
  })
}
// 当用require获取的内容就是bodyParse
module.exports = bodyParse